package com.todo.member.application.service;

import com.todo.common.common.entity.response.page.PageResult;
import com.todo.member.application.entity.bo.MemberLevelBO;
import com.todo.member.application.entity.condition.MemberLevelConditionBO;
import com.todo.member.common.enums.LevelStatusEnum;

import java.util.List;

/**
 * @author azhebuxing
 * @date 2025/2/12 21:55
 * @description
 */
public interface MemberLevelService {

    /**
     * 新增会员等级
     *
     * @param memberLevelBO
     * @return
     */
    Boolean insertMemberLevel(MemberLevelBO memberLevelBO);

    /**
     * 更新会员等级
     *
     * @param memberLevelBO
     * @return
     */
    Boolean updateMemberLevel(MemberLevelBO memberLevelBO);

    /**
     * 根据主键删除会员等级
     *
     * @param id
     * @return
     */
    Boolean removeMemberLevelById(Long id);

    /**
     * 根据Id查询会员等级
     *
     * @param id
     * @return
     */
    MemberLevelBO queryMemberLevelById(Long id);

    /**
     * 根据主键更新会员等级状态
     *
     * @param id
     * @param oldStatus
     * @param newStatus
     * @return
     */
    Boolean updateMemberLevelStatusById(Long id, LevelStatusEnum oldStatus, LevelStatusEnum newStatus);

    /**
     * 查询有效会员等级列表
     *
     * @return
     */
    List<MemberLevelBO> queryEffectiveMemberLevelList();

    /**
     * 多条件查询会员等级列表
     *
     * @param memberLevelConditionBO
     * @return
     */
    PageResult<MemberLevelBO> queryMemberLevelByPage(MemberLevelConditionBO memberLevelConditionBO);


}
